# print("hello world")
# aaa = 5

"""
try:
    尝试捕捉的代码块会放到这里
excpet:
    如果报错的话，走到这个代码块
else:
    只有当try里面不报错的时候，我才会执行
finally:
    无论报错与否，我都要执行
"""
"""
try: # 我尝试执行下面的代码
    # list1 = [10,20,30]
    # print(list1[99]) # IndexError: list index out of range
    list2 = [10,20]
    print(list2[0])
except:
    print("兄弟，你报错了，看下代码")
else:
    print("代码没问题，运行成功了")
finally:
    print("我的程序已经执行完毕了！")

def run():
    print("强身健体")
run()
"""

# 异常的单分子
"""
try:
    a
    # list1 = [10,20]
    # print(list1[33])
except NameError as f:
    print("兄弟你看一下你代码")
    print(f)
else:
    print("代码正确")
finally:
    print("完成了异常捕获")
"""
# 异常的多分子
"""
try:
    # L = [1,2]
    # L[3]
    a
except NameError as f:
    print("兄弟你看一下你代码")
    print(f)
except IndexError as f:
    print("兄弟你看一下你代码")
    print(f)
else:
    print("代码正确")
finally:
    print("完成了异常捕获")
"""
# 合并异常
"""
try:
    L = [1,2]
    L[3]
    a
except (NameError,IndexError) as f:
    print("兄弟你看下代码")
    print(f)
else:
    print("代码正确")
finally:
    print("完成了异常捕获")
"""

# 自定义异常，主动抛出异常 raise
"""L = [1,2,3,4,5]
if len(L) !=6:
    raise IndexError("列表长度必须大于5，我有我的规则")"""

# raise TypeError("所有代码执行到此，必须报错，不解释")
# raise NameError("所有代码执行到此，必须报错，不解释")
# 第二种方式：断言
# assert "赵博1" in ["赵博","赵魁元"]
# assert "赵博" == "赵博"
# assert "赵博" !="赵魁元"







